home *** CD-ROM | disk | FTP | other *** search
/ Ahoy 1988 January / Ahoy_Magazine_88-01_1988_Double_L.d64 / Infoflow 64 (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  10KB  |  327 lines

  1. 10 rem infoflow 64 (c)1987 "[195][205][194]"
  2. 20 poke53280,11:poke53281,.
  3. 30 v=53248:spbase=49152+1016:s=54272:jp=56320:deffnjf(v)=((peek(jp)and16)=.)
  4. 40 deffnm(v)=int(v/rl%):plot=53180
  5. 50 nf$="[152] [206]o [198]ile in [205]emory!":fe$="[152][198]ile [195]urrently in [205]emory!":q$="  [209][213][201][212]  "
  6. 60 dimbo(7):fori=.to7:bo(i)=2^i:next:cr$=chr$(13)
  7. 70 gosub2010
  8. 80 pokev+21,.:pokev+16,16:fori=.to7:pokespbase+i,32+i:next:pokev+39,15
  9. 90 fori=v+40tov+46:pokei,6:next:fori=51200to51711:reada:pokei,a:next
  10. 100 fori=vtov+15:reada:pokei,a:next
  11. 110 fori=53000to53223:reada:pokei,a:next:sys53000
  12. 120 b$="[147][154] *            [201]nfo[198]low 64             * "
  13. 130 gosub140:goto220
  14. 140 printb$:printtab(2)"[211]ave"spc(6)"[206]ew"spc(6)"[196]elete"spc(4)"[214]iew/[193]dd"
  15. 150 printtab(2)"[204]oad"spc(6)"[198]ile"spc(5)"[210]ecord"spc(4)"[210]ecord"
  16. 160 forx=.to39:print"[164]";:next:print:printtab(32)"[176][178][174][157][157][157][171][219][179][157][157][177][189]"
  17. 170 printtab(2)"[211]ort"spc(6)"[211]earch"spc(3)"[200]ardcopy"spc(2)"[195]urrent"
  18. 180 printtab(31)"[210]ecord"
  19. 190 print"[152] * (c)1987 [194]y [195]leveland [205]. [194]lakemore  * ";
  20. 200 printspc(3)"[146][151][211][208][193][195][197] [201][206] [205][197][205][207][210][217] [198][207][210] 0000[151] [210]ecords!":printtab(15)"";q$;""
  21. 210 pokev+16,16:pokev,160:pokev+1,115:pokev+21,255:return
  22. 220 waitjp,16,16
  23. 230 c=peek(v+30):c=peek(v+30)and254:fori=1to7:ifbo(i)=cthenc=i
  24. 240 next
  25. 250 oncgosub300,620,800,1080,1220,1380,1430
  26. 260 x=peek(v):i=peek(v+1)
  27. 270 if(peek(v+16)and1)=1andx>8andx<60andi>150andi<187thengosub1620:goto220
  28. 280 ifi<235then220
  29. 290 waitjp,16,.:sysplot,15,24:print"[154]";q$"[157][157]?";:gosub1740:gosub1740:gosub1740
  30. 295 iffnjf(.)=.andusr(.)=.then295
  31. 296 iffnjf(.)thenpoke648,4:poke679,.:sys679
  32. 297 sysplot,15,24:print"";q$;:goto220
  33. 300 rem save/load file
  34. 310 gosub1810
  35. 320 open15,8,15:close15
  36. 330 ifst<>.thenprint"[147][196][210][201][214][197] [207][198][198] [204][201][206][197]!":gosub1830:gosub1780:gosub1750:return
  37. 340 poke198,0:print"[155][211][146]ave or [204][146]oad?"
  38. 350 wait198,1:geta$:ifa$<>"l"anda$<>"s"thengosub1780:return
  39. 360 ifa$="l"then470
  40. 370 rem save file to disk
  41. 380 ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
  42. 390 print"[147][155][211][193][214][201][206][199][160][198][201][204][197] ";ft$:a$=ft$
  43. 400 open15,8,15,"s:[201][198]]"+a$:close15:open2,8,2,"[201][198]]"+a$+",s,w"
  44. 410 j=ef-1:print#2,rl%;cr$;tl;cr$;j;cr$;n;cr$;ft$
  45. 420 forx=1ton:print#2,n$(x);cr$;l%(x):next
  46. 430 forj=1toef-1:fori=1ton:print#2,r$(j,i):nexti,j
  47. 440 close2:open15,8,15:input#15,ds,ds$:close15:print""ds$:gosub1830
  48. 450 goto600
  49. 460 rem load file
  50. 470 ifefthenprintfe$:gosub1830:gosub1780:return
  51. 480 print"[155][198]ilename:";:a=12:gosub1930:a$=in$
  52. 490 close2:open2,8,2,"[201][198]]"+a$+",s,r"
  53. 500 close15:open15,8,15:input#15,a,ds$:ifa>.then600
  54. 510 input#2,rl%,tl,ef,n,ft$
  55. 520 dimr$(tl,n),n$(n),l%(n)
  56. 530 fori=1ton:input#2,n$(i):input#2,l%(i)
  57. 540 next
  58. 550 forj=1toef
  59. 560 fori=1ton
  60. 570 get#2,a$:ifa$<>cr$thenr$(j,i)=r$(j,i)+a$:goto570
  61. 580 nexti,j:ef=ef+1:cr=1
  62. 590 close2:input#15,ds,ds$
  63. 600 print""ds$;:close15:gosub1830
  64. 610 gosub1780:gosub1750:return
  65. 620 rem initialize new file
  66. 630 gosub1810:ifefthenprint"";fe$:gosub1830:gosub1780:gosub1750:return
  67. 640 rl%=.:tl=.:print"[155] [198]ilename:";:a=10:gosub1930:ft$=in$
  68. 650 print"[206]umber of fields:";:a=2:gosub1930:n=val(in$):ifn<1orn>22then650
  69. 660 dimn$(n),l%(n)
  70. 670 forx=1ton:print"[206]ame [198]ield #";x;"[157]:";:a=39:gosub1930:n$(x)=in$
  71. 680 a$="":print"[204]ength [198]ield #";x;"[157]:";:a=3:gosub1930:a$=in$
  72. 690 ifval(a$)>.andval(a$)<255thenl%(x)=abs(val(a$)):goto710
  73. 700 print"[196]efault (160) !":l%(x)=160
  74. 710 rl%=rl%+l%(x):next
  75. 720 rl%=rl%+3*(n+1)+5:tl=fnm(fre(.)):ef=2:dimr$(tl,n)
  76. 730 print"[212]his file will permit at least"
  77. 740 printfnm(fre(.));" [210]ecords."
  78. 750 print"[193][146]ccept or [210][146]eject?"
  79. 760 geta$:ifa$<>"a"anda$<>"r"then760
  80. 770 ifa$="r"thenrun
  81. 780 print"[154][197]mpty [198]ile [195]reated.";:cr=1:ef=1:gosub1830:gosub1780:gosub1750
  82. 790 return
  83. 800 rem delete record(s)
  84. 810 gosub1810:ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
  85. 820 print"[155][195][146]urrent [210]ecord, [211][146]can [198]ile, [193][146]ll or [197][146]xit?"
  86. 830 geta$:ifa$<>"e"anda$<>"s"anda$<>"c"anda$<>"a"then830
  87. 840 ifa$="e"thengosub1780:return
  88. 850 ifa$="s"then990
  89. 860 ifa$="c"thengosub910:gosub1780:return
  90. 870 print"[196][197][204][197][212][197][160][193][204][204][160][210][197][195][207][210][196][211]![160][193][210][197][160][217][207][213][160][211][213][210][197]?[160]([217]/[206])"
  91. 880 geta$:ifa$<>"y"anda$<>"n"then880
  92. 890 ifa$="y"thenrun
  93. 900 gosub1780:return
  94. 910 print"[196][197][204][197][212][201][206][199]...."
  95. 920 fori=1ton:r$(cr,i)="":next:forx=1toef-1
  96. 930 ifr$(x,1)=""thenfori=1ton:r$(x,i)=r$(x+1,i):r$(x+1,i)="":nexti
  97. 940 nextx
  98. 950 ifef>1andef<>crthenef=ef-1
  99. 960 gosub1860:print"[186] [210][197][195][207][210][196][160]#";cr;"[196][197][204][197][212][197][196]."
  100. 970 gosub1830:return
  101. 980 goto1070
  102. 990 poke198,.:print"[211][200][201][198][212]-[197] [212][207][160][197]xit, [211][200][201][198][212]-[196] [212][207] [196]elete      "
  103. 1000 geta$:jy=usr(.):ifjy=.anda$=""then1000
  104. 1010 ifjy=3thencr=cr+1
  105. 1020 ifjy=7thencr=cr-1
  106. 1030 ifa$="[196]"thengosub910
  107. 1040 ifa$="[197]"thengosub1780:return
  108. 1050 ifcr>efthencr=ef
  109. 1060 ifcr<1thencr=1
  110. 1070 gosub1860:goto1000
  111. 1080 rem view records
  112. 1090 gosub1810:ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
  113. 1100 gosub1110:gosub1780:return
  114. 1110 gosub1850
  115. 1120 jy=usr(.):a=cr:iffnjf(.)thenreturn
  116. 1130 ifjy=3thencr=cr+1:ifcr>efthencr=ef:goto1110
  117. 1140 ifjy=7thencr=cr-1:ifcr<1thencr=1:goto1110
  118. 1150 ifjy=1thenprint"";:goto1180
  119. 1160 ifcr<>athen1110
  120. 1170 goto1120
  121. 1180 print"[155]";:forx=1ton:printn$(x);":";
  122. 1190 a=l%(x):in$=" ":gosub1940:print"[155]";:ifin$<>" "thenr$(cr,x)=mid$(in$,2)
  123. 1200 next:ifcr=efandr$(cr,1)<>""thenef=cr+1:ifef>tlthenef=tl
  124. 1210 goto1110
  125. 1220 rem  sort records
  126. 1230 rem shell metzner algorithm
  127. 1240 gosub1810:ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
  128. 1250 forx=1ton:printx;"[157]. ";n$(x):next
  129. 1260 print"[155][211]ort by which [198]ield? (1 -";n;"[157]) :";:a=2:gosub1930
  130. 1270 x=val(in$):ifx<1orx>nthen1260
  131. 1280 m=ef-1:print:print"[211]tand by...[211]orting [198]ile!"
  132. 1290 m=int(m/2):ifm=.then1370
  133. 1300 k=(ef-1)-m:j=1
  134. 1310 i=j
  135. 1320 l=i+m:ifr$(i,x)<=r$(l,x)then1350
  136. 1330 forr=1ton:a$=r$(i,r):r$(i,r)=r$(l,r):r$(l,r)=a$:next
  137. 1340 i=i-m:ifi>=1then1320
  138. 1350 j=j+1:ifj>kthen1290
  139. 1360 goto1310
  140. 1370 print"[186] [211][207][210][212][160][195][207][205][208][204][197][212][197][196].":gosub1830:gosub1780:gosub1750:return
  141. 1380 rem search records, find string
  142. 1390 gosub1810:ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
  143. 1400 print"[155][211]earch [211]tring:";:a=23:gosub1930:s$=in$
  144. 1410 forj=1toef-1:fori=1ton:ifleft$(r$(j,i),len(s$))=s$thencr=j:gosub1110:cr=j
  145. 1420 nexti,j:print"[155] [186] [211]earch [195]ompleted.";:cr=1:gosub1830:gosub1780:return
  146. 1430 rem hardcopy
  147. 1440 gosub1810:ifef=.thenprintnf$:gosub1830:gosub1780:gosub1750:return
  148. 1450 print"[147]***   [210]ecord [210]ange for [200]ardcopy    *** "             
  149. 1460 a$="":print"[198]rom:";:a=3:gosub1930
  150. 1470 f=val(in$)
  151. 1480 iff<1orf>efthen1460
  152. 1490 a$="":print"[212]o:";:a=3:gosub1930
  153. 1500 l=val(in$)
  154. 1510 ifl<1orl>efthen1490
  155. 1520 print"[147]":print"[155][186] [208][210][201][206][212][201][206][199] [198][201][204][197] ";ft$
  156. 1530 open15,4,15:close15
  157. 1540 ifst<>.thenprint"[208][210][201][206][212][197][210] [207][198][198] [204][201][206][197]!!!!":gosub1830:gosub1780:return
  158. 1550 open4,4,7:cmd4
  159. 1560 forj=ftol:cr=j:gosub1880:print:next
  160. 1570 print#4,""
  161. 1580 close4
  162. 1590 print"[155][186] [196]one.":gosub1780
  163. 1600 gosub1750:return
  164. 1610 rem current record bar
  165. 1620 ifef=.thenreturn
  166. 1630 waitjp,16,.
  167. 1640 iffnjf(.)thenin$=str$(cr):sysplot,32,20:print"";:waitjp,16,.:goto1790
  168. 1650 jy=usr(.)
  169. 1660 ifjy=3thencr=cr+1
  170. 1670 ifjy=7thencr=cr-1
  171. 1680 ifjy=1thencr=cr+10
  172. 1690 ifjy=5thencr=cr-10
  173. 1700 ifcr<1thencr=1
  174. 1710 ifcr>efthencr=ef
  175. 1720 in$=str$(cr):sysplot,32,20:print"[154]";:gosub1910
  176. 1730 goto1640
  177. 1740 rem bell
  178. 1750 pokes+24,15:pokes+5,.:pokes+6,247:pokes+1,50:pokes+4,17
  179. 1760 pokes,2:forx=.to175:next:pokes+4,16:return
  180. 1770 rem switch to command screen
  181. 1780 gosub140:sysplot,23,23:print"[152]";:ifrl%thenin$=str$(fnm(fre(.))):gosub1910
  182. 1790 gosub1750:in$=str$(cr):sysplot,32,20:print"";:gosub1910:return
  183. 1800 rem switch to text
  184. 1810 pokev+21,.:printb$:gosub1750:return
  185. 1820 rem delay
  186. 1830 fori=.to5000:next:return
  187. 1840 rem print one record
  188. 1850 poke780,.:poke781,1:poke782,.:poke783,.:sys59903
  189. 1860 fori=2to24:poke780,.:poke781,i:poke782,.:poke783,.:sys59903:next
  190. 1870 print"";
  191. 1880 print"[155] [210][197][195][207][210][196][160]# ";cr;"[157] in [198][201][204][197][160]";ft$;" "
  192. 1890 forx=1ton:print"[155]";n$(x);": ";"";r$(cr,x):next:return
  193. 1900 rem output right justified string
  194. 1910 printright$("0000"+(right$(in$,len(in$)-1)),4):return
  195. 1920 rem safe basic input
  196. 1930 fori=.to39:printchr$(32);:next:print"[145]";:in$=""
  197. 1940 poke198,.:poke204,.
  198. 1950 wait198,15:getz$:z=asc(z$):ifz>95and(z<193orz>218)then1950
  199. 1960 zl=len(in$):ifzl=athen1980
  200. 1970 ifz>31thenin$=in$+z$:printz$;:goto1950
  201. 1980 ifz=13andzlthenpoke204,1:print" ":return
  202. 1990 ifz=20andzlthenin$=left$(in$,zl-1):print" [157][157] [157]";
  203. 2000 goto1950
  204. 2010 poke56578,peek(56578)or3:poke56576,peek(56576)and252
  205. 2020 poke53272,peek(53272)and15:poke648,192:poke53272,(peek(53272)and240)or12
  206. 2030 printchr$(147)chr$(8)chr$(14)"[154][208]lease [211]tand [194]y...."
  207. 2040 forx=1to33:reada:poke680+x,a:next:poke56334,peek(56334)and254
  208. 2050 poke1,peek(1)and251:sys681:poke1,peek(1)or4:poke56334,peek(56334)or1
  209. 2060 reada:ifa=-1thenreturn
  210. 2070 forx=.to7:readd:poke63488+a*8+x,d:next:goto2060
  211. 2080 data 169,,133,251,133,253,169,208,133,252,169,240,133,254,162,16
  212. 2090 data 160,,177,251,145,253,136,208,249,230,252,230,254,202,208,240,96
  213. 2100 data91,250,12,248,64,127,64,64,126
  214. 2110 data107,169,169,33,32,32,32,32,0
  215. 2120 data110,254,6,10,18,34,194,66,66
  216. 2130 data112,224,191,129,129,255,,32,112
  217. 2140 data113,64,64,127,64,64,127,64,127
  218. 2150 data114,15,16,32,64,255,128,255,129
  219. 2160 data115,130,2,2,2,130,130,130,130
  220. 2170 data125,130,130,130,130,132,136,144,224,-1
  221. 2180 rem sprite data
  222. 2190 data0,,,,,0
  223. 2200 data0,,,3,255,128
  224. 2210 data2,1,,2,2,0
  225. 2220 data2,4,,2,2,0
  226. 2230 data2,1,,2,,128
  227. 2240 data2,96,64,2,144,32
  228. 2250 data3,8,16,,4,8
  229. 2260 data0,2,4,,1,2
  230. 2270 data0,,129,,,65
  231. 2280 data0,,34,,,20
  232. 2290 data0,,8,,,0
  233. 2300 data0,7,255,240,7,227
  234. 2310 data240,7,221,224,7,221
  235. 2320 data240,7,221,240,7,227
  236. 2330 data240,7,255,240,7,247
  237. 2340 data240,7,247,240,7,247
  238. 2350 data240,7,255,240,,0
  239. 2360 data0,255,255,255,198,0
  240. 2370 data3,197,255,227,197,64
  241. 2380 data35,197,255,227,192,0
  242. 2390 data3,255,255,255,,0
  243. 2400 data0,,128,,,64
  244. 2410 data0,,36,15,255,20
  245. 2420 data16,3,12,32,5,124
  246. 2430 data64,9,,255,241,0
  247. 2440 data128,17,,143,17,0
  248. 2450 data128,17,,255,241,0
  249. 2460 data128,17,,143,17,0
  250. 2470 data128,17,,128,17,0
  251. 2480 data255,241,,128,17,0
  252. 2490 data128,17,,143,18,0
  253. 2500 data128,20,,255,248,0
  254. 2510 data0,,,,,0
  255. 2520 data0,60,,,66,0
  256. 2530 data3,255,192,4,,32
  257. 2540 data3,255,192,2,,64
  258. 2550 data2,82,64,2,82,64
  259. 2560 data2,82,64,2,82,64
  260. 2570 data2,82,64,2,82,64
  261. 2580 data2,82,64,2,82,64
  262. 2590 data2,82,64,2,,64
  263. 2600 data3,255,192,,,0
  264. 2610 data0,,,,,0
  265. 2620 data0,,,,,0
  266. 2630 data0,,,,,255
  267. 2640 data0,3,,192,4,60
  268. 2650 data32,8,66,16,16,153
  269. 2660 data8,32,189,4,16,153
  270. 2670 data8,8,66,16,4,60
  271. 2680 data32,3,,192,,255
  272. 2690 data0,,,,,0
  273. 2700 data0,,,,,0
  274. 2710 data0,,,,,0
  275. 2720 data0,255,,,8,15
  276. 2730 data255,20,16,3,34,32
  277. 2740 data5,62,64,9,34,255
  278. 2750 data241,34,128,17,,143
  279. 2760 data17,60,128,17,34,255
  280. 2770 data241,34,128,17,60,143
  281. 2780 data17,34,128,17,34,128
  282. 2790 data17,60,255,241,,128
  283. 2800 data17,28,128,17,34,143
  284. 2810 data18,32,128,20,32,255
  285. 2820 data248,34,,,28,255
  286. 2830 data0,,,,,0
  287. 2840 data15,128,,1,131,255
  288. 2850 data2,130,1,4,130,1
  289. 2860 data8,,1,16,63,225
  290. 2870 data32,32,63,64,32,32
  291. 2880 data128,,32,7,252,32
  292. 2890 data4,7,224,4,4,0
  293. 2900 data0,4,,255,132,0
  294. 2910 data128,252,,128,128,0
  295. 2920 data128,128,,128,128,0
  296. 2930 data255,128,,255,,0
  297. 2940 data0,,127,255,,64
  298. 2950 data1,,94,1,,64
  299. 2960 data1,,95,253,,64
  300. 2970 data1,16,95,253,8,64
  301. 2980 data1,252,95,253,8,64
  302. 2990 data1,16,95,253,,64
  303. 3000 data1,,95,253,,64
  304. 3010 data1,,95,253,,64
  305. 3020 data1,,64,1,,127
  306. 3030 data255,,,,,0
  307. 3040 data0,255
  308. 3050 rem icon locations
  309. 3060 data 165,160,45,80,117,80,200,80,30
  310. 3070 data 80,45,162,130,160,205,160
  311. 3080 rem interrupt routine
  312. 3090 data 120,169,31,141,20,3,169,207,141,21,3,169,166,141,17
  313. 3100 data 3,169,207,141,18,3,88,96,173,,220,41,15,133,253
  314. 3110 data 169,15,56,229,253,168,185,221,207,240,8,141,168,2,160
  315. 3120 data 0,32,60,207,76,163,207,173,168,2,10,170,189,202,207
  316. 3130 data 8,152,10,170,40,48,25,240,43,173,220,207,24,125,0
  317. 3140 data 208,157,,208,144,31,169,1,77,16,208,141,16,208,76
  318. 3150 data 120,207,189,,208,56,237,220,207,157,,208,176,8,169
  319. 3160 data 1,77,16,208,141,16,208,173,168,2,10,170,232,189,202
  320. 3170 data 207,8,152,10,170,232,40,48,15,240,23,173,220,207,24
  321. 3180 data 125,,208,157,,208,76,162,207,189,,208,56,237,220
  322. 3190 data 207,157,,208,96,76,49,234,173,,220,41,15,133,253
  323. 3200 data 169,15,56,229,253,168,185,221,207,168,169,,108,5,0
  324. 3210 data 32,155,183,138,72,32,155,183,104,168,24,76,240,255,0
  325. 3220 data 0,,255,1,255,1,,1,1,,1,255,1,255,0
  326. 3230 data 255,255,2,,1,5,,7,8,6,,3,2,4
  327.